package cn.bouncyslime.graduationProject.nba.dao;

import cn.bouncyslime.graduationProject.nba.dto.*;
import org.apache.ibatis.annotations.Mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author 张一卓
 * @date 2020/4/2 20:58
 **/
@Mapper
public interface PlayerDataDao {

    void insertRSPlayerAveragingData(RS_PlayerAveragingDto playerAveragingDto);
    void insertRSPlayerSummaryData(RS_PlayerSummaryDto playerSummaryDto);
    void insertRSPlayerSingleTopmostData(PlayerSingleTopmostDto playerSingleDto);
    void insertRSPlayerAdvancedBasicData(PlayerAdvancedBasicDto playerAdvancedBasicDto);
    void insertRSPlayerAdvancedShootingData(PlayerAdvancedShootingDto playerAdvancedShootingDto);

    void insertPSPlayerAveragingData(PS_PlayerAveragingDto playerAveragingDto);
    void insertPSPlayerSummaryData(PS_PlayerSummaryDto playerSummaryDto);
    void insertPSPlayerSingleTopmostData(PlayerSingleTopmostDto playerSingleDto);
    void insertPSPlayerAdvancedBasicData(PlayerAdvancedBasicDto playerAdvancedBasicDto);
    void insertPSPlayerAdvancedShootingData(PlayerAdvancedShootingDto playerAdvancedShootingDto);

    List<RS_PlayerAveragingDto> listRSPlayerAveragingData(Integer playerId, String season);
    List<RS_PlayerSummaryDto> listRSPlayerSummaryData(Integer playerId, String season);
    List<PlayerSingleTopmostDto> listRSPlayerSingleTopmostData(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listRSPlayerAdvancedBasicData(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listRSPlayerAdvancedShootingData(Integer playerId, String season);

    List<PS_PlayerAveragingDto> listPSPlayerAveragingData(Integer playerId, String season);
    List<PS_PlayerSummaryDto> listPSPlayerSummaryData(Integer playerId, String season);
    List<PlayerSingleTopmostDto> listPSPlayerSingleTopmostData(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listPSPlayerAdvancedBasicData(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listPSPlayerAdvancedShootingData(Integer playerId, String season);

    List<Map<String, BigDecimal>> listRSPlayerAvgScore(Integer playerId, String season);
    List<RS_PlayerAveragingDto> listRSPlayerAvgPercentage(Integer playerId, String season);
    List<RS_PlayerAveragingDto> listRSPlayerAvgAmount(Integer playerId, String season);
    List<RS_PlayerAveragingDto> listRSPlayerAvgAttempts(Integer playerId, String season);
    List<RS_PlayerAveragingDto> listRSPlayerAvgRebound(Integer playerId, String season);
    List<RS_PlayerAveragingDto> listRSPlayerAvgOtherData(Integer playerId, String season);

    List<RS_PlayerSummaryDto> listRSPlayerSumPercentage(Integer playerId, String season);
    List<RS_PlayerSummaryDto> listRSPlayerSumAmount(Integer playerId, String season);
    List<RS_PlayerSummaryDto> listRSPlayerSumAttempts(Integer playerId, String season);
    List<RS_PlayerSummaryDto> listRSPlayerSumRebound(Integer playerId, String season);
    List<RS_PlayerSummaryDto> listRSPlayerSumOtherData(Integer playerId, String season);

    List<PlayerAdvancedBasicDto> listRSPlayerBasicAdvReboundRate(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listRSPlayerBasicAdvWinShare(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listRSPlayerBasicAdvEfficiency(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listRSPlayerBasicAdvOther(Integer playerId, String season);

    List<PlayerAdvancedShootingDto> listRSPlayerShootingAdvPercentage(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listRSPlayerShootingAdvAmount(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listRSPlayerShootingAdvAttempts(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listRSPlayerShootingAdvProportion(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listRSPlayerShootingAdvOther(Integer playerId, String season);

    List<Map<String, BigDecimal>> listPSPlayerAvgScore(Integer playerId, String season);
    List<PS_PlayerAveragingDto> listPSPlayerAvgPercentage(Integer playerId, String season);
    List<PS_PlayerAveragingDto> listPSPlayerAvgAmount(Integer playerId, String season);
    List<PS_PlayerAveragingDto> listPSPlayerAvgAttempts(Integer playerId, String season);
    List<PS_PlayerAveragingDto> listPSPlayerAvgRebound(Integer playerId, String season);
    List<PS_PlayerAveragingDto> listPSPlayerAvgOtherData(Integer playerId, String season);

    List<PS_PlayerSummaryDto> listPSPlayerSumPercentage(Integer playerId, String season);
    List<PS_PlayerSummaryDto> listPSPlayerSumAmount(Integer playerId, String season);
    List<PS_PlayerSummaryDto> listPSPlayerSumAttempts(Integer playerId, String season);
    List<PS_PlayerSummaryDto> listPSPlayerSumRebound(Integer playerId, String season);
    List<PS_PlayerSummaryDto> listPSPlayerSumOtherData(Integer playerId, String season);

    List<PlayerAdvancedBasicDto> listPSPlayerBasicAdvReboundRate(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listPSPlayerBasicAdvWinShare(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listPSPlayerBasicAdvEfficiency(Integer playerId, String season);
    List<PlayerAdvancedBasicDto> listPSPlayerBasicAdvOther(Integer playerId, String season);

    List<PlayerAdvancedShootingDto> listPSPlayerShootingAdvPercentage(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listPSPlayerShootingAdvAmount(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listPSPlayerShootingAdvAttempts(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listPSPlayerShootingAdvProportion(Integer playerId, String season);
    List<PlayerAdvancedShootingDto> listPSPlayerShootingAdvOther(Integer playerId, String season);

    List<String> listAllSeason();

    List<Map<String, Object>> listRSTopAvgScore(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopAvgRebound(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopAvgAssists(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopAvgFault(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopAvgFoul(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopAvgSteal(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopAvgBlockShot(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopEfficiencyRating(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopTrueShootingPercentage(String season, int limit, int offset);

    List<Map<String, Object>> listRSTopSumScore(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSumRebound(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSumAssists(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSumFault(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSumFoul(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSumSteal(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSumBlockShot(String season, int limit, int offset);

    List<Map<String, Object>> listRSTopSingleScore(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSingleRebound(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSingleAssists(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSingleFault(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSingleFoul(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSingleSteal(String season, int limit, int offset);
    List<Map<String, Object>> listRSTopSingleBlockShot(String season, int limit, int offset);
}
